package org.fly.jingwei.dao;

import org.springframework.stereotype.Repository;
import org.fly.jingwei.entity.JobEntity;
import org.fly.jingwei.entity.TaskGroupAttributeEntity;
import org.fly.jingwei.entity.TaskGroupEntity;
import org.fly.jingwei.entity.TransformationEntity;

import java.util.List;

/**
 * @author leo
 * @date 2017/3/22
 */
@Repository
public interface TaskGroupDao {
    /**
     * @param start
     * @param limit
     * @param userGroupName
     * @param taskGroupName
     * @param createDate
     * @return
     */
    List<TaskGroupEntity> getAllTaskGroup(int start, int limit, String userGroupName, String taskGroupName, String createDate);

    /**
     * @param userGroupName
     * @return
     */
    Integer getTotalCountTaskGroup(String userGroupName);

    /**
     * @param taskGroup
     */
    void addTaskGroup(TaskGroupEntity taskGroup);

    /**
     * @param taskGroupAttribute
     */
    void addTaskGroupAttribute(TaskGroupAttributeEntity taskGroupAttribute);

    List<JobEntity> getAllJob(String userGroupName);

    List<TransformationEntity> getAllTrans(String userGroupName);

    List<TaskGroupEntity> getAllTaskGroupNoLimit();

    void updateTaskGroup(TaskGroupEntity taskGroup);

    void updateTaskGroupAttributes(String oldName, String newName);

    void updateTaskNameforAttr(String oldName, String newName, String type, String dirName);

    List<TaskGroupAttributeEntity> getTaskGroupAttributesByName(String name);

    void deleteTaskGroupAttributesByName(String name);

    void deleteTaskGroupByName(String name);

    Integer isContainsTask(String taskName, String type, String groupName);

    void deleteTaskGroupAttributesByTaskName(String taskName, String type);

    List<TaskGroupAttributeEntity> getTaskGroupByTaskName(String taskName, String type);

    TaskGroupEntity getTaskGroupById(Integer id);

    /**
     * 修改用户组-任务组关系表中的任务组名
     *
     * @param oldName
     * @param newName
     */
    void updateTaskGroupForTaskRelation(String oldName, String newName);

    /**
     * 删除用户组-任务组关系表中的某个任务组记录
     *
     * @param taskGroupName
     */
    void deleteUserTaskRelationByName(String taskGroupName);

    /**
     * 查询当前用户组下的所有任务组
     *
     * @param userGroupName
     * @return
     */
    List<TaskGroupEntity> getTaskGroupByThisUser(String userGroupName);
}
